package com.sdnu.service.service.impl;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.sdnu.service.entity.quest.CheckInData;
import com.sdnu.service.entity.quest.vo.CheckInDataQuery;
import com.sdnu.service.entity.quest.vo.CheckInDataVo;
import com.sdnu.service.mapper.CheckInDataMapper;
import com.sdnu.service.service.CheckInDataService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

/**
 * <p>
 *  服务实现类
 * </p>
 *
 * @author Konjacer
 * @since 2022-02-24
 */
@Service
public class CheckInDataServiceImpl extends ServiceImpl<CheckInDataMapper, CheckInData> implements CheckInDataService {


    @Override
    public List<CheckInDataVo> getAll() {
        QueryWrapper<CheckInData> wrapper = new QueryWrapper<>();
        wrapper.orderByDesc("gmt_modified");
        List<CheckInData> checkInDataList = this.list(wrapper);

        List<CheckInDataVo> finalList = new ArrayList<>();
        for(CheckInData item : checkInDataList){
            CheckInDataVo listVo = new CheckInDataVo();
            BeanUtils.copyProperties(item,listVo);
            finalList.add(listVo);
        }

        return finalList;
    }

    @Override
    public List<CheckInDataVo> pageSelect(Page<CheckInData> page, QueryWrapper<CheckInData> wrapper) {
        this.page(page,wrapper);
        List<CheckInData> records = page.getRecords();
        long total = page.getTotal();

        List<CheckInDataVo> finalList = new ArrayList<>();
        for(CheckInData item : records){
            CheckInDataVo listVo = new CheckInDataVo();
            BeanUtils.copyProperties(item,listVo);
            finalList.add(listVo);
        }
        return finalList;
    }


    @Override
    public QueryWrapper<CheckInData> querySelect(CheckInDataQuery checkInDataQuery) {
        QueryWrapper<CheckInData> wrapper = new QueryWrapper<>();
        String batch = checkInDataQuery.getBatch();
        String name = checkInDataQuery.getName();
        String clazz = checkInDataQuery.getClazz();
        String studentNumber = checkInDataQuery.getStudentNumber();
        Date begin = checkInDataQuery.getBegin();
        Date end = checkInDataQuery.getEnd();

        //判断条件值是否为空，如果不为空则拼接条件
        if(!StringUtils.isEmpty(batch)){
            wrapper.eq("batch",batch);
        }
        if(!StringUtils.isEmpty(name)){
            //构造条件
            wrapper.eq("name",name);
        }
        if(!StringUtils.isEmpty(studentNumber)){
            //构造条件
            wrapper.eq("student_number",studentNumber);
        }
        if(!StringUtils.isEmpty(clazz)){
            //构造条件
            wrapper.eq("clazz",clazz);
        }
        if(!StringUtils.isEmpty(begin)){
            wrapper.ge("gmt_create",begin);
        }
        if(!StringUtils.isEmpty(end)){
            wrapper.le("gmt_create",end);
        }
        return wrapper;
    }
}
